<?php

/**
 * @Description    用于用户登录后的基类,框架模型基类控制器, 需要登录后才能访问的接口需要继承此类
 * @Author         zhaojiping
 * @Copyright      山东艾思网络科技有限公司(https://www.aisisofit.cn)
 * @Date           2022/1/20
 * @CreateBy       VS Code
 */

namespace app\common\controller;

/**
 * 控制器基类
 */
trait CrudTrait {
    protected $model    = null;  // 在子类中赋值
    protected $validate = null;  // 在子类中赋值

    /**
     * 获取数据列表
     */
    public function lists() {
        $list = $this->model->getPageList();
        json_return(1, '数据列表', $list);
    }

    /**
     * 获取数据列表, 返回表的所有记录
     */
    public function ls() {
        $list = $this->model->getList($where = []);
        json_return(1, '数据列表', $list);
    }

    /**
     * 获取单条数据信息
     */
    public final function detail() {
        $id = input('id/d', 0);
        if ($id == 0) json_return(0, '参数丢失');

        $where[] = ['id', '=', $id];
        $list = $this->model->geDetail($where);
        json_return(1, '数据列表', $list);
    }

    /**
     * 保存数据
     */
    public final function edit() {
        $data = input();
        unset($data['token']);

        if (!$this->validate->check($data)) json_return(0, $this->validate->getError());

        $id = input('id/d', 0);
        if ($id > 0) {
            $result = $this->model->update($data, ['id' => $id]);
            json_return(1, '保存成功', ['id' => $id]);
        } else {
            $result = $this->model->save($data);
            json_return(1, '保存成功', ['id' => $this->model->id]);
        }
    }

    /**
     * 删除数据
     */
    public final function del() {
        $ids = input('ids', '');
        if ($ids == '') json_return(0, '参数丢失');

        $ids = rtrim($ids, ',');
        $ids = explode(',', $ids);

        $result = $this->model->destroy($ids);
        return json_return(1, '删除成功');
    }
}
